<?php
//clase per guarda les dades obtenidas de les consultes.
class datos {
    public $datos;
    public $fechas;
    //afegim a la instancia un array amb les dades
    public function afegirDatos($dat) {
        $this->datos=$dat;
    }
    //afegim les dates amb unio amb les dades van correlatives
    public function afegirFechas($fech) {
        $this->fechas=$fech;
    }
        /*Aquesta funcio retorna un array amb les dades i les dates
     *$res=retorn de la consulta sql
     * $camp= camp de la base de dades del cual es vol extreure les dades
     * $precisio=precisio en la que s'hagafaran les dades
     * $seleccio=tipu de data que volem que ens retorni minuts:hora, mes,dia etc...
     */
    public function retornar($res,$camp,$precisio,$seleccio) {

        $datos=array();
        $fecha=array();
        if(!$res) {
        }else {
            $c=0;
            $cont=0;
            while($fila=mysql_fetch_array($res)) {
                $cont++;
                if($cont%$precisio==0) {
                    if(isset($fila['id'])) {
                        $hora=substr($fila['id'],8,2);
                        $minutos=substr($fila['id'],10,2);
                    }
                    switch($seleccio) {

                        case 1:$fecha[$c]=$hora . ":" .  $minutos;break;
                        case 2: $fecha[$c]=substr($fila["id"],6,2) . "/" . substr($fila["id"],4,2) . " " . $hora . ":" .  $minutos;break;
                        case 3:$fecha[$c]=$fila["dia"] . "/" . $fila["mes"];break;
                        case 4:$fecha[$c]=$fila["mes"];break;
                        case 5:$fecha[$c]=$fila["hora"] . ":00";break;

                    }
                    $datos[$c]=$fila[$camp]/1;
                    $c++;
                }
            }
        }
        $this->afegirDatos($datos);
        $this->afegirFechas($fecha);
    }
}



/*Funcio que retorna les dades de les 24 ultimes hores de la hora seleccionada
 *$camp=camp de la bd que es vol obtenir dades
 *$data= data del cual es vol treure les dades
 * $fechaUnit=array amb les dades(de retorn)
 * $max= valor maxim del array(de retorn)
 * $min=valor minim del array(de reton)
 * $con=conexio a la base de dades
 */
function dades24h($camp,$data,&$datosunits,&$fechaUnit,&$max,&$min,$con) {
    $any=substr($data,0,4);
    $mes=substr($data,4,2);
    $dia=substr($data,6,2);
    $idfin=hdia($data);
    $anyfin=substr($idfin,0,4);
    $res=mysql_query("SELECT (max( pluja_tot ) - min( pluja_tot )) AS pluja_dia,hora FROM a" . $any ." a ,(select round((id%10000)/100) as hora,id from a" . $any ." WHERE id>=" . $idfin . " and id<=".($data+5).") p WHERE a.id>=" . $idfin . " and a.id<=".($data+5)." and p.id=a.id group by mes,dia,hora",$con);
    $claseDat2=new datos();
    $claseDat2->retornar($res, $camp ,1,5);
    if($anyfin!=$any) {
        $res2=mysql_query("SELECT (max( pluja_tot ) - min( pluja_tot )) AS pluja_dia,hora FROM a" . $anyfin ." a ,(select round((id%10000)/100) as hora,id from a" . $any ." WHERE id>=" . $idfin . " and id<=".($data+5).") p WHERE a.id>=" . $idfin . " and a.id<=".($data+5)." and p.id=a.id group by mes,dia,hora",$con);
        $claseDat=new datos();
        $claseDat->retornar($res2, $camp ,1,5);
        $datosunits = array_merge($claseDat->datos,$claseDat2->datos);
        $fechaUnit = array_merge($claseDat->fechas,$claseDat2->fechas);
    }else {
        $datosunits=$claseDat2->datos;
        $fechaUnit=$claseDat2->fechas;
    }
    if(isset( $datosunits[1]) ) {
        $max=max(array_values($datosunits));
        $min=min(array_values($datosunits));
    }else {$max=0;$min=0;}
}
/*Funcio que retorna les dades dels ultims 7 dies de la hora seleccionada
 *$camp=camp de la bd que es vol obtenir dades
 *$data= data del cual es vol treure les dades
 * $fechaUnit=array amb les dades(de retorn)
 * $max= valor maxim del array(de retorn)
 * $min=valor minim del array(de reton)
 * $con=conexio a la base de dades
 */
function dadesSetmana($camp,$data,&$datosunits,&$fechaUnit,&$max,&$min,$con) {
    $any=substr($data,0,4);
    $mes=substr($data,4,2);
    $dia=substr($data,6,2);
    $idfin=setmana($data);
    $anyfin=substr($idfin,0,4);
    $res=mysql_query("select (max(pluja_tot) - min(pluja_tot)) as pluja_dia, mes, dia from a" . $any . " where id>=" . $idfin . " and  id<=" . ($data +5) . " group by mes, dia  order by id asc",$con);
    $claseDat2=new datos();
    $claseDat2->retornar($res, $camp,1,3);
    if($anyfin!=$any) {
        $res2=mysql_query("select (max(pluja_tot) - min(pluja_tot)) as pluja_dia, mes, dia from a" . $anyfin . " where id>=" . $idfin . " and  id<=" . ($data +5) . " group by mes, dia order by id asc",$con);
        $claseDat=new datos();
        $claseDat->retornar($res2, $camp,1,3);
        $datosunits = array_merge($claseDat->datos,$claseDat2->datos);
        $fechaUnit = array_merge($claseDat->fechas,$claseDat2->fechas);
    }else {
        $datosunits=$claseDat2->datos;
        $fechaUnit=$claseDat2->fechas;
    }
    if(isset( $datosunits[1]) ) {
        $max=max(array_values($datosunits));
        $min=min(array_values($datosunits));
    }else {$max=0;$min=0;}
}
/*Funcio que retorna les dades del ultims 30 dies de la hora seleccionada
 *$camp=camp de la bd que es vol obtenir dades
 *$data= data del cual es vol treure les dades
 * $fechaUnit=array amb les dades(de retorn)
 * $max= valor maxim del array(de retorn)
 * $min=valor minim del array(de reton)
 * $con=conexio a la base de dades
 */
function dadesMes($camp,$data,&$datosunits,&$fechaUnit,&$max,&$min,$con) {
    $any=substr($data,0,4);
    $mes=substr($data,4,2);
    $dia=substr($data,6,2);
    $idfin=mesd($data);
    $anyfin=substr($idfin,0,4);
    $res=mysql_query("select (max(pluja_tot) - min(pluja_tot)) as pluja_dia, mes, dia from a" . $any . " where id>=" . $idfin . " and  id<=" . ($data +5) . " group by mes, dia order by id asc",$con);
    $claseDat2=new datos();
    $claseDat2->retornar($res, $camp,1,3);
    if($anyfin!=$any) {
        $res2=mysql_query("select (max(pluja_tot) - min(pluja_tot)) as pluja_dia, mes, dia from a" . $anyfin . " where id>=" . $idfin . " and  id<=" . ($data +5) . " group by mes, dia order by id asc",$con);
        $claseDat=new datos();
        $claseDat->retornar($res2, $camp,1,3);
        $datosunits = array_merge($claseDat->datos,$claseDat2->datos);
        $fechaUnit = array_merge($claseDat->fechas,$claseDat2->fechas);
    }else {
        $datosunits=$claseDat2->datos;
        $fechaUnit=$claseDat2->fechas;
    }
    if(isset( $datosunits[1]) ) {
        $max=max(array_values($datosunits));
        $min=min(array_values($datosunits));
    }else {$max=0;$min=0;}
}
/*Funcio que retorna les dades del ultim any de la hora seleccionada
 *$camp=camp de la bd que es vol obtenir dades
 *$data= data del cual es vol treure les dades
 * $fechaUnit=array amb les dades(de retorn)
 * $max= valor maxim del array(de retorn)
 * $min=valor minim del array(de reton)
 * $con=conexio a la base de dades
 */
function dadesAny($camp,$data,&$datosunits,&$fechaUnit,&$max,&$min,$con) {
    $any=substr($data,0,4);
    $mes=substr($data,4,2);
    $dia=substr($data,6,2);
    $idfin=anym($data);
    $anyfin=substr($idfin,0,4);
    $res=mysql_query("select (max(pluja_tot) - min(pluja_tot)) as pluja_dia, mes,any from a" . $any . " where id>=" . $idfin . " and  id<=" . ($data +5) . " group by any,mes order by id asc",$con);
    $claseDat2=new datos();
    $claseDat2->retornar($res, $camp,1,4);
    if($anyfin!=$any) {
        $res2=mysql_query("select (max(pluja_tot) - min(pluja_tot)) as pluja_dia, mes,any from a" . $anyfin . " where id>=" . $idfin . " and  id<=" . ($data +5) . " group by any,mes order by id asc",$con);
        $claseDat=new datos();
        $claseDat->retornar($res2, $camp,1,4);
        $datosunits = array_merge($claseDat->datos,$claseDat2->datos);
        $fechaUnit = array_merge($claseDat->fechas,$claseDat2->fechas);
    }else {
        $datosunits=$claseDat2->datos;
        $fechaUnit=$claseDat2->fechas;
    }
    if(isset( $datosunits[1]) ) {
        $max=max(array_values($datosunits));
        $min=min(array_values($datosunits));
    }else {$max=0;$min=0;}
}
?>

